{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "adolescent-cisco",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import mglearn"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "soviet-beach",
   "metadata": {},
   "source": [
    "## 一些样本数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "geographic-uganda",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成数据集\n",
    "X, y = mglearn.datasets.make_forge()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "involved-raising",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Second feature')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAl5UlEQVR4nO3de3xU9Z3/8deHEIPlDkZNQQuNXWtBQQLarmipioqtuq0Uuaqtl7paQOyubdmbW1to7a5StL9tWV2FChala6vbooDrBe1FiAQBUUssbsEAEeQSWyPBz++POWNDzCSTzJw5M3Pez8djHpnLd875cEjO53y/53sxd0dEROKnS9QBiIhINJQARERiSglARCSmlABERGJKCUBEJKa6Rh1ARxx11FE+aNCgqMMQESko1dXVb7p7ecv3CyoBDBo0iLVr10YdhohIQTGz11t7X01AIiIxpQQgIhJTSgAiIjGlBCAiElNKACIiMaUEICISU0oAkjV1dXVccM6n2bFjR9ShiEgalAAka26bcyvP/+Y5bptza9ShiEgalAAkK+rq6li48D6emNaNhQvvVS1ApAAoAUhW3DbnVq44pYRTK0q4/OQS1QJECoASgGQsefV/8+mJ1zefjmoBIgVACUAylrz6r+iZ+HWq6NlFtQCRAqAEIBlpefWfpFqASP5TApCMtLz6T1ItQCT/KQFIp6W6+k9SLUAkvykBSKeluvpPUi1AikWxDnIsqAVhJL+s+d1veG5NA/Oea7vcGe/+OjcBiYSk+SDH2+f/MOpwssbcPeoY0jZy5EjXimAikkt1dXUMObGSJyZ14dyfvsemV17j2GOPjTqsDjGzancf2fJ9NQGFoFiri5nScZFCVMyDHJUAQhD3OXFSnehbOy5KCpLPin2QoxJAlmlOnNQn+taOS9yTpeS3Yh/kqASQZcVcXUxHWyf6lsdFyVLyWRwGOSoBZFGxVxfT0daJvuVxueUfvxnrZCn5LQ6DHNULKItmTb8e1v2EO879yy/MrFXvYSMuL6quY6kke0tsuibxR1N34D2G3n2I8eMn8KFXfnbYcbn2V008sOFdXr2+22FlC7GHhRSflr/LH/i8wH5f87IXkJltNbMNZlZjZvl7Zk9DHKqL7WmtvfTSE40lSxZ/cLTwoYNMG2pF27YqhS0ugxzzYSDYZ9z9zaiDyFTb1UWKbgBJS8kEuOmaksM/aHGih8TV07KXDrLp+h6HFb35dBh6973cPPufCuKqSopXXAY5xuoeQFhdDjUnTusJMHmi/6ezyg4v+9y7XDHsiKJuW5XC9uzz63D3dh/PPr8u6lAzEnUCcGCFmVWb2bWtFTCza81srZmtra+vz2hnYXU5jEt1MZVUCbC1E33dgfdYuP5dbj7jiFa3FYdkKZIvIr0JbGYD3H27mR0NrASmu/szqcpnchM4zOHco087lefW1LRb7oxRwwv+iqE1rd38Bhj9X2/z3B8PHfbeESVw1aml/L/PHpl6ezG6cS6SC6luAkd6D8Ddtwc/d5nZw8BpQMoEkIm/dE/swuUnW1bb5JMn9VnTr2fhPQu48uqvxOrklXZ76ajhAPzHmhr+Y+3BtssWeNuqSCGIrAZgZt2BLu5+IHi+EviWuz+W6judrQGk6p6YzVpAMUwYJSLFKR+7gR4DPGtm64HngV+2dfLPRC6Gc8d9BLCIFJ6iHwiWakBHNmsBuahhiIh0Vj7WAHIiF8O5i33CKBGJRtiz5RZ1AshF/3yNABZNaS1hCXu23KJOALnonx+HCaOkbZrSWsKQi9lyi/oeQNj984ttwijpOPX+krA0H1+T6diYWN4DCHs4d9xHAIt6f0k4cjW1fFHXAMIW9Qjguro6vjR1IvctXqqrzgio95eEJdtTy8eyBhC2qCeMUttztNT7S8KQy44lSgAFSsspRku9vyQsuexYogRQoNT2HC31/pIw5HpqeSWAAqS1h6Ol9R8kLLnuWJIPK4JJB7Xe9lz8q44lRX3zO70/0vj8f0j25HwlsnRuYubLo6qqysOwZcsWv/6rM7x3v6PcunTx3v2O8uu/OsO3bNkSyv4y8cYbb3jfnkf6Gzf1cP+XXu8/3riph/frdaTX1dVFHWLobvzq33rfI0t81vTrI9n/GaOGO4nFjNp8nDFqeCTxibQErPVWzqmx7wa6fPlyJkyaQtnQ8ygbci5dex9N075dNG5aRePGFTz4wGLGjRuX1X1mItXiKxCPhVQ08Eqk41J1A411AqitrWV41Sh6XDSbsgEnfeDzxu2baXh0DjXVa6isrMzafjtLI4+zOzpSJC40DqAVt8+bn7jyb+XkD1A24CTKhozljh/cmePIWhf3kce6+S2SXbGuAfTpX0738XMp7VuRsszBt+p4e9ls9u7elbX9dlbUI4+jlu3RkSJxoRpAK/bv3UPX3ke3WaZrr3IO7N2To4jaFvXI4yhp4JVI9sU6AfTq04+mfW1f2Tftr6dnn345ikhS0cArkeyLdQKYMnkyjZtWtVmmceNKpk6ZnKOIpDUaeCUSjlgngJtunEHjxhU0bt/c6ueN2zfTuGkls2ZOz3Fk0lzcb36LhCXWI4ErKyt58IHFTJg0hYNDxlI2dCxde5XTtL+exo0rady0kgcfWJwXXUDjLOejI0ViItYJAGDcuHHUVK/hjh/cyf2LZ3Ng7x569unH1CmTmbUoP/r/x10x3tQWyQeRdwM1sxJgLbDd3T/XVtl8WxBGRKQQ5HM30JlA643wIiISmkgTgJkNBD4L3B1lHCIicRR1DWAecDPwXqoCZnatma01s7X19fU5C0xEpNhFlgDM7HPALnevbqucuy9w95HuPrK8vDxH0YmIFL8oawBnABeb2Vbgp8DZZnZ/hPGIiMRKZAnA3b/p7gPdfRAwEfhfd58aVTwiInET9T0AERGJSF4MBHP3p4CnIg5DRCRWVAMQEYkpJQARkZhSAhARiSklABGRmFICEBGJKSUAEZGYUgIQEYmptBKAmX3EzM4Nnh9pZj3DDUtERMLWbgIws2uAZcCPg7cGAj8PMSYREcmBdGoAN5CYuG0/gLv/Hjg6zKBERCR86SSARnd/N/nCzLoC0a4jKSIiGUsnATxtZrOBI81sLPAQ8Gi4YYmISNjSSQBfB+qBDcBXgF8B/xhmUCIiEr42ZwM1sxJgk7t/HPjP3IQkIiK50GYNwN0PAa+Y2fE5ikdERHIknfUA+gKbzOx54O3km+5+cWhRiYhI6NJJAP8UehQiIpJz7SYAd386F4GIiEhutZsAzOwAf+n3fwRQCrzt7r3CDExERMKVTg3g/Xl/zMyAS4BPhhmUiIiEr0OzgXrCz4HzwwlHRERyJZ0moC80e9kFGAm8E1pEIiKSE+n0Arqo2fMmYCuJZqCMmFk34BmgLIhjmbv/S6bbFRGR9KSTAO529+eav2FmZwC7Mtx3I3C2uzeYWSnwrJktd/ffZrhdERFJQzr3AO5M870OCe4nNAQvS4OHZhkVEcmRlDUAM/sU8NdAuZnd1OyjXkBJNnYezDVUDZwA/NDdf9dKmWuBawGOP14zUoiIZEtbNYAjgB4kkkTPZo/9wPhs7NzdD7n7cBKrjJ1mZkNbKbPA3Ue6+8jy8vJs7FZERGijBhCMAH7azO5z99fDDMLd95rZk8AFwMYw9yUiIgnp3AT+k5l9HxgCdEu+6e5nZ7JjMysHDgYn/yOBscD3MtmmiIikL52bwIuBl4HBwL+S6Aa6Jgv7rgCeNLMXg+2tdPf/ycJ2RUQkDenUAPq7+z1mNrNZs1DGCcDdXwROzXQ7IiLSOekkgIPBzzoz+yzwBtAvvJBERCQX0kkA3zaz3sDXSPT/7wXMCjUqEREJXTqzgSbb5fcBnwk3HBERyZV2bwKb2V+Z2RNmtjF4fYqZ/WP4oYmISJjS6QX0n8A3Ce4FBDdvJ4YZlIiIhC+dBPAhd3++xXtNYQQjnVNbW8sN02fSp385XUpK6NO/nBumz6S2tjbq0EQkj6WTAN40s0qCidrMbDxQF2pUkrbly5czvGoUS9ftpPv4uRz3tYfpPn4uS9ftZHjVKJYvXx51iNJJdXV1XHDOp9mxY0fUoUiRSicB3AD8GPi4mW0HbgSuCzMoSU9tbS0TJk2hx0Wz6TF6GqV9K7AuJZT2raDH6Gn0uGg2EyZNUU2gQN0251ae/81z3Dbn1qhDkSKVMgGY2czgaYW7nwuUAx9399Fhzw0k6bl93nzKhp5H2YCTWv28bMBJlA0Zyx0/yHj2bsmxuro6Fi68jyemdWPhwntVC5BQtFUD+FLw804Ad3/b3Q+EH5Kka/GSJZQNObfNMmVDx3L/4iU5ikiy5bY5t3LFKSWcWlHC5SeXqBYgoWgrAWw2s98DJ5rZi80eG4L5eyRi+/fuoWvvo9ss07VXOQf27slRRJINyav/m09PvL75dFQLkFCkTADuPgk4E9hCYl3g5ONzHL5OsESkV59+NO1re2XOpv319OyjmTsKSfLqv6Jn4s+zomcX1QIkFG3eBHb3He4+zN1fb/nIVYCS2pTJk2nctKrNMo0bVzJ1yuQcRSSZann1n6RagIQhnV5AkqduunEGjRtX0Lh9c6ufN27fTOOmlcyaOT3HkUlntbz6T1ItQMKgBFDAKisrefCBxTQ8OoeG1Ys4+FYdfqiJg2/V0bB6EQ2PzuHBBxZTWVkZdaiShlRX/0mqBUi2KQEUuHHjxlFTvYaJVRW8vWw2226/lLeXzWZiVQU11WsYN25c1CFKmlJd/SepFiDZZu7e+gdmjxKM/m2Nu18cVlCpjBw50teuXZvr3YrkxOjTTuW5NTXtljtj1HCefX5d+AFJ0TCzancf2fL9tqaD/rfg5xeAY4H7g9eTgJ3ZDU9EdFKXXEuZAILlHzGzf2+ROR41M12Gi4gUuHTuAXQ3s48mX5jZYKB7eCGJiEgupLMk5CzgKTN7DTDgI8BXQo1KRERCl86SkI+Z2ceAjwdvvezujeGGJSIiYUu3G2gVMAQYBlxmZpdnumMzO87MnjSzl8xsU7PZR0VS0uI3ItnTbg3AzH4CVAI1wKHgbQcWZbjvJuBr7v6CmfUEqs1spbu/lOF2pUgtX76cCZOmUDb0PLqPn0vv3kfTtG8XS9etYlHVKB58YLHGPYh0QDr3AEYCn/BUAwY6yd3rCFYWc/cDZrYZGAAoAcgHNF/8pvn6B6V9KygdPY3SwSOZMGkKNdVrNPJZJE3pNAFtJDEOIDRmNgg4FfhdK59da2ZrzWxtfX19mGFIHtPiNyLZl3Ik8PsFzJ4EhgPPA+/f/M3WSGAz6wE8DXzH3f+7rbIaCRxfffqX0338XEr7VqQsc/CtOt5eNpu9u9ueIlskbjozEjjpluyHk2BmpcDPgMXtnfwl3vbv3UNvLX4jklXtNgEFI4JfBnoGj83JUcKZMDMD7gm2d3um25PipsVvRLKv3QRgZhNINP98EZgA/M7Mxmdh32cA04CzzawmeFyYhe1KEdLiNyLZl04T0D8Ao9x9F4CZlQOrgGWZ7NjdnyUxslikXTfdOINFVaMoHTyy1RvB7y9+s2hNBNGJFKZ0EkCX5Mk/sButIyA5llz8ZsKkKRwcMpayoWPp2qucpv31NG5cSeOmlVr8RqSD0jmRP2Zmj5vZlWZ2JfBLYHm4YRUmjVINlxa/EcmudruBApjZF4DRwcvV7v5wqFGlkM/dQJuPUi0bci5dg1GqjZtW0bhxhUapikhkUnUDTWccwGCgzt3fCV4fCRzj7lvDCLQt+ZoAamtrGV416gOjVJMat2+m4dE5GqUqIpFIlQDSaQJ6CHiv2etDwXsSiGKUqpqbRCRT6SSAru7+bvJF8PyI8EIqPIuXLKFsyLltlikbOpb7Fy/Jyv6WL1/O8KpRLF23k+7j53Lc1x6m+/i5LF23k+FVo1i+XLdoRKR96fQCqjezi939EQAzuwR4M9ywCksuR6kmJ0XrNuZaGre/zFv3/z3v/Xk/XY7sRfdPfJpuY67VpGgikpZ0agDXAbPN7I9m9n/A19GKYIfJ5SjV2+fNxwaczJ4V/4F1PYJjp36f4//uYY6d+n2s6xGJ9z88VJOiiUi70uoFBO9P2oa7N4QaURvy9SbwDdNnsnTdTnqMnpayTMPqRUysquCu+fMy2lfPPv34U2MTR4//55Q3nHct+xYfKivlwN7dGe1LRIpDp28Cm9kxZnYP8JC7N5jZJ8zsqlCiLFA33TiDxo0raNy+udXP3x+lOnN6xvtqaGigx/AL2rzh3GPY+bzdcCDjfYlIcUunCeg+4HHgw8HrV4EbQ4qnICVHqTY8OoeG1Ys4+FYdfqiJg2/V0bB6EQ2PzsnaKFXr0oUep5zXZpkew86HLhqsLZItxdrrLp2zxFHu/iBBV1B3b+IvS0NKIFejVL3pXbqmccOZpoNZ2Z9I3BVzr7t0EsDbZtafxDrAmNkngX2hRpUnOpr1KysruWv+PPbu3sWhQ03s3b2Lu+bPy2pvnJ69+6Z1w7lH775Z26dIXDVfirTH6GmU9q3AupRQ2reCHqOn0eOi2UyYNKVgawLpJICbgEeASjN7jsRi8Jk3Zue5fM3606ZO5Z0NK9os8+cNj3P5tKk5ikikeBX7UqTpzgXUFTiRxPTNr7h7JO0LueoFlM9TO+RzbCLFpliWIu1wLyAzG2Vmx8L77f5VwHeAfzezol52KZ+zfi5vOIvE3f69e9K651aoS5G21QT0Y+BdADM7C/guieaffcCC8EOLTq6ndugoTYsskhvFvhRpW1NBlLh7Mq1dBixw958BPzOzmtAji1AhLECevOGc6cAyEUltyuTJLF23itI2BnkW8lKkbdUASoK2f4BzgP9t9lk6cwgVrGLP+iKSnlwO8oxCWwngAeBpM/sF8GdgNYCZnUCRdwPVAuQiAsV/zy1lAnD37wBfIzESeLT/pbtQF4q8G2ixZ30RSV8x33NLezK4fJDLyeDeX+KxjQXIC/k/XsJXW1vL7fPms3jJEvbv3UOvPv2YMnkyN904o2CvGKUwZbIiWCwVc9aX8OXrQEKR5iKtAZjZfwGfA3a5+9D2yufrdNAizWmwnuSbfK0B3AdcEHEMIlmVzwMJRZqLNAG4+zNAYQ6hE0kh3wcSiiRFXQNol5lda2ZrzWxtfX191OGItKvYpw+Q4pH3CcDdF7j7SHcfWV5eHnU4Iu3SQEIpFHmfAEQKjQYSSqFQAhDJMg0klEIRaQIwsweA3wAnmtk2LTYvxaDYpw+Q4hHppG7uPinK/YuEJTmQ8I4f3Mn9i2dzYO8eevbpx9Qpk5m1SP3/JT9oKggRkSKXrwPBREQkIkoAIiIxpQQgIhJTSgAiIjGlBCAiElNKACIiMaUEICISU0oAIiIxpQQgIhJTSgAiIjGlBCAiElNKACIiMaUEICISU0oAIiIxpQQgIhJTSgAiIjGlBCAiElNKACIiMaUEICISU5EuCi8i0lEHDx5k27ZtvPPOO1GHkne6devGwIEDKS0tTau8EoCIFJRt27bRs2dPBg0ahJlFHU7ecHd2797Ntm3bGDx4cFrfibQJyMwuMLNXzGyLmX0jylhEpDC888479O/fXyf/FsyM/v37d6hmFFkCMLMS4IfAOOATwCQz+0RU8YhI4Uj35F9bW8sN02fSp385XUpK6NO/nBumz6S2tjbkCKPR0aQYZQ3gNGCLu7/m7u8CPwUuiTAeESkiy5cvZ3jVKJau20n38XM57msP0338XJau28nwqlEsX7486hAjF2UCGAD8sdnrbcF7hzGza81srZmtra+vz1lwIpIbYVyl19bWMmHSFHpcNJseo6dR2rcC61JCad8KeoyeRo+LZjNh0pRO72PHjh1MnDiRyspKqqqquPDCC3n11VfZunUrQ4cO7XTcbWlsbOSyyy7jhBNO4PTTT2fr1q0ZbzPvu4G6+wJ3H+nuI8vLy6MORwpQ3JoBCklYV+m3z5tP2dDzKBtwUquflw04ibIhY7njB3d2eNvuzuc//3nGjBlDbW0t1dXVzJ07l507d3Yq1nTdc8899O3bly1btjBr1iy+/vWvZ7zNKBPAduC4Zq8HBu+JZI2aAfJXmFfpi5csoWzIuW2WKRs6lvsXL+nwtp988klKS0u57rrr3n9v2LBhnHnmmYeV27p1K2eeeSYjRoxgxIgR/PrXvwagrq6Os846i+HDhzN06FBWr17NoUOHuPLKKxk6dCgnn3wyd9xxxwf2+4tf/IIrrrgCgPHjx/PEE0/g7h2Ov7koE8Aa4GNmNtjMjgAmAo9EGI8UgI5czYfdDCCZCfMqff/ePXTtfXSbZbr2KufA3j0d3vbGjRupqqpqt9zRRx/NypUreeGFF1i6dCkzZswAYMmSJZx//vnU1NSwfv16hg8fTk1NDdu3b2fjxo1s2LCBL33pSx/Y3vbt2znuuMQ1c9euXenduze7d+/ucPzNRZYA3L0J+CrwOLAZeNDdN0UVj+S/jl7Nh3mCkcyFeZXeq08/mvbtarNM0/56evbp1+Ftp+vgwYNcc801nHzyyXzxi1/kpZdeAmDUqFHce++93HLLLWzYsIGePXvy0Y9+lNdee43p06fz2GOP0atXr9Diai7SewDu/it3/yt3r3T370QZi+S3zlzNh3mCkcyFeZU+ZfJkGjetarNM48aVTJ0yucPbHjJkCNXV1e2Wu+OOOzjmmGNYv349a9eu5d133wXgrLPO4plnnmHAgAFceeWVLFq0iL59+7J+/XrGjBnDj370I66++uoPbG/AgAH88Y+JfjNNTU3s27eP/v37dzj+5vL+JrAIdO5qPswTjGQuzKv0m26cQePGFTRu39zq543bN9O4aSWzZk7v8LbPPvtsGhsbWbBgwfvvvfjii6xevfqwcvv27aOiooIuXbrwk5/8hEOHDgHw+uuvc8wxx3DNNddw9dVX88ILL/Dmm2/y3nvvcemll/Ltb3+bF1544QP7vfjii1m4cCEAy5Yt4+yzz854MJwSgBSEzlzN50MzgKQW5lV6ZWUlDz6wmIZH59CwehEH36rDDzVx8K06GlYvouHROTz4wGIqKys7vG0z4+GHH2bVqlVUVlYyZMgQvvnNb3LsscceVu76669n4cKFDBs2jJdffpnu3bsD8NRTTzFs2DBOPfVUli5dysyZM9m+fTtjxoxh+PDhTJ06lblz535gv1dddRW7d+/mhBNO4Pbbb+e73/1uh2P/wL8l07vIuTRy5Ehfu3Zt1GFIBLqUlHDc1x7GupSkLOOHmth2+6UcOtQEwA3TZ7J03U56jJ6W8jsNqxcxsaqCu+bPy3bI0o7a2lqGV42ix0WzW63ZNW7fTMOjc6ipXnPYiXrz5s2cdFLrNcHW9nHHD+7k/sVLOLB3Dz379GPqlMnMmjm9Uyf/QtDa8TGzancf2bKsJoOTgpC8mi/tW5GyTMur+ZtunMGiqlGUDh6Z8gTTuGklsxatCSVmaVvyKn3CpCkcHDKWsqFj6dqrnKb99TRuXEnjppWdvkpvvo+75s9Tgk9BTUBSEDrTXBBmM4Bkx7hx46ipXsPEqgreXjabbbdfytvLZjOxqoKa6jWMGzcu6hCLmpqApCB0trkg+d24NQMUs440AcWRmoCk6GTSXKBmAJHWqQlICoaaC6Sz6urquOCcT7Njx46oQ8krSgBSUJJX83t37+LQoSb27t7FXfPnqSlH2nTbnFt5/jfPcducW6MOJa8oAcSYZsmUOKirq2Phwvt4Ylo3Fi68Nyu1gCimg37mmWcYMWIEXbt2ZdmyZVnZphJATGmWTImL2+bcyhWnlHBqRQmXn1yScS0gqumgjz/+eO677z4mT+74wLhUlABiSLNkSlwkr/5vPj3x+ubTybgWENV00IMGDeKUU06hS5fsnbaVAGJIs2RKXCSv/it6Jk51FT27ZFwLiGo66DAoAcSQZsmUOGh59Z+UjVpAOjQdtOQlzZIpcdDy6j8p01pAVNNBh0EJIIY0S6YUu1RX/0mZ1AKimg46DEoAMRTmNLwi+SDV1X9SJrWAqKaDXrNmDQMHDuShhx7iK1/5CkOGDOlw7B/4t2guoPjJZF4dkailMxfQ6NNO5bk1Ne1u64xRw3n2+XVZiiw/aC4gaVMupuEViVKxndTDoiagmNK8OiKiGkCMaZZMKVTunvF6uMWoo036qgGISEHp1q0bu3fv7vDJrti5O7t376Zbt25pfyeSGoCZfRG4BTgJOM3ddWdXRNIycOBAtm3bRn19fdSh5J1u3boxcODAtMtH1QS0EfgC8OOI9i8iBaq0tJTBgwdHHUZRiCQBuPtmQG14IiIRyvt7AGZ2rZmtNbO1qvKJiGRPaDUAM1sFHNvKR//g7r9IdzvuvgBYAImBYFkKT0Qk9kJLAO7e9nSTnVBdXf2mmb2e4WaOAt7MRjxZprg6Ll9jU1wdl6+xFUtcH2ntzYIaB+Du5Zluw8zWtjYkOmqKq+PyNTbF1XH5GluxxxXJPQAz+7yZbQM+BfzSzB6PIg4RkTiLqhfQw8DDUexbREQS8r4XUAgWtF8kEoqr4/I1NsXVcfkaW1HHVVDTQYuISPbEsQYgIiIoAYiIxFbRJgAzm2Vmm8xso5k9YGbdWnxeZmZLzWyLmf3OzAblSVxXmlm9mdUEj5ysDm1mM4OYNpnZja18bmY2PzheL5rZiDyJa4yZ7Wt2vP45xFj+y8x2mdnGZu/1M7OVZvb74GffFN+9IijzezO7Io/iOtTs2D2SzbjaiO2Lwf/ne2aWsiujmV1gZq8Ev3PfyKO4tprZhuCYZXUiyxRxfd/MXg7+7h42sz4pvtvx4+XuRfcABgB/AI4MXj8IXNmizPXAj4LnE4GleRLXlcBdOT5eQ0lM0PchEj3DVgEntChzIbAcMOCTwO/yJK4xwP/k6DidBYwANjZ77zbgG8HzbwDfa+V7/YDXgp99g+d9o44r+KwhgmN2EnAi8BQwMsX3SoBa4KPAEcB64BNRxxWU2woclcPjdR7QNXj+vRS/Y506XkVbAyBxwjjSzLqSOIG80eLzS4CFwfNlwDmWm9np2osrCieROKH/yd2bgKdJzNba3CXAIk/4LdDHzCryIK6ccfdngD0t3m7+e7QQ+JtWvno+sNLd97j7W8BK4II8iCt0rcXm7pvd/ZV2vnoasMXdX3P3d4Gfkvg3RR1XqFLEtSL4/Qf4LdDafM+dOl5FmQDcfTvwb8D/AXXAPndf0aLYAOCPQfkmYB/QPw/iArg0qO4tM7PjwowpsBE408z6m9mHSFztt9zv+8crsC14L+q4AD5lZuvNbLmZDQk5ppaOcfe64PkO4JhWykRx7NKJC6CbJSZb/K2Z/U3IMXVEFMcsXQ6sMLNqM7s2x/v+MomaeEudOl5FmQCC9s5LgMHAh4HuZjY12qjSjutRYJC7n0LiSnEhIfPE9NzfA1YAjwE1wKGw99ueNON6AfiIuw8D7gR+nsMQD+OJunje9atuJ66PeGJKgcnAPDOrzF1kBWu0u48AxgE3mNlZudipmf0D0AQsztY2izIBAOcCf3D3enc/CPw38NctymwnuJoMmmN6A7ujjsvdd7t7Y/DybqAq5JiS+73H3avc/SzgLeDVFkXeP16BgcF7kcbl7vvdvSF4/iug1MyOCjuuZnYmm8KCn7taKRPFsUsnrmStFHd/jUTb96khx5WuSH7f0tHsmO0iMaPBaWHv08yuBD4HTAkSekudOl7FmgD+D/ikmX0oaNc/B9jcoswjQLI3xnjgf1Mc2JzG1aJd/eKWn4fFzI4Ofh5Pop19SYsijwCXB72BPkmi+aqOkLUXl5kdm7x3Y2ankfidDjuRN9f89+gKoLWpzh8HzjOzvkEt8LzgvUjjCuIpC54fBZwBvBRyXOlaA3zMzAab2REkOmpkvZdSR5lZdzPrmXxO4v9yY9vfynifFwA3Axe7+59SFOvc8QrjTnY+PIB/BV4m8Z/zE6AM+FZwEAG6AQ8BW4DngY/mSVxzgU0k7uI/CXw8R3GtJvHHvx44J3jvOuC64LkBPyTR02ADbfSSyHFcX212vH4L/HWIsTxA4t7NQRJtrFeRuG/0BPB7Er2U+gVlRwJ3N/vul4PftS3Al/IhLhK1zw3BsdsAXJWjY/b54HkjsBN4PCj7YeBXzb57IYkaXy2JdUQij4tEL5v1wWNTjuLaQqJ9vyZ4/KhlXJ09XpoKQkQkpoq1CUhERNqhBCAiElNKACIiMaUEICISU0oAIiIxpQQgRafFDJc1ZjbIzH7dwW3cGEw/0dpnZwazRtaY2ZGdiG92R78jEgZ1A5WiY2YN7t4jjXJd/S+TbLX8bCuJsQ5vtvLZj4Bn3f3+MONLN1aRzlINQGLBzBqCn2PMbLUl5r5/KRjZ+ctgMrmNZnaZmc0gMcjmSTN7ssV2rgYmALea2eLgvb83szXBBH7/2qzsz4MJwzYlJw0zs++SmA22xswWB7WT5nO//52Z3RI8f8rM5llizvmZZlZlZk8H23w8B7OxSpHrGnUAIiE40sxqgud/cPfPt/h8BDDU3f9gZpcCb7j7ZwHMrLe77zOzm4DPtKwBuPvdZjaaxBoEy8zsPOBjJOaDMeARMzvLE9P6ftnd9wTNRGvM7Gfu/g0z+6q7Dw/2N6idf8sR7j7SzEpJTId9ibvXm9llwHdIjDAW6RQlAClGf06eYFN43t3/EDzfAPy7mX2PxEl9dQf3dV7wWBe87kEiITwDzDCzZPI5Lni/o/MULQ1+nkhigZyVwdRHJSSmDBDpNCUAiaO3k0/c/VVLLG95IfBtM3vC3b/VgW0ZMNfdf3zYm2ZjSMz++il3/5OZPUVi/qmWmji8KbZlmWSsBmxy9091IDaRNukegMSamX0Y+FNwQ/f7JJqHAA4APdPYxOPAl82sR7C9AcEMpr2Bt4KT/8dJLKOZdDBo0oHEpGNHW2LRmzISU/625hWg3Mw+Feyn1HK/+I0UGdUAJO5OBr5vZu+RmIHxb4P3FwCPmdkb7v6ZVF929xVmdhLwm6BppgGYSmIBm+vMbDOJk/dvm31tAfCimb3g7lPM7FskZqTdTmKm2Nb2866ZjQfmm1lvEn+780jMSCnSKeoGKiISU2oCEhGJKSUAEZGYUgIQEYkpJQARkZhSAhARiSklABGRmFICEBGJqf8PsSF846kFyVUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 数据集绘图\n",
    "mglearn.discrete_scatter(X[:, 0], X[:, 1], y)\n",
    "plt.legend([\"Class 0\", \"Class 1\"], loc=4)\n",
    "plt.xlabel(\"First feature\")\n",
    "plt.ylabel(\"Second feature\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "white-trinity",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(26, 2)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "minor-thesis",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Target')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# wave数据，用于回归\n",
    "X, y = mglearn.datasets.make_wave(n_samples=40)\n",
    "plt.plot(X, y, 'o')\n",
    "plt.ylim(-3, 3)\n",
    "plt.xlabel(\"Feature\")\n",
    "plt.ylabel(\"Target\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "developed-deposit",
   "metadata": {},
   "source": [
    "## 乳腺癌数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "finite-scratch",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "cancer = load_breast_cancer()\n",
    "cancer.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "lined-answer",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(569, 30)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cancer.data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "nominated-pilot",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['malignant', 'benign'], dtype='<U9')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cancer.target_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "absent-master",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 'malignant'表示恶性, 'benign'表示良性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "rural-alert",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['mean radius', 'mean texture', 'mean perimeter', 'mean area',\n",
       "       'mean smoothness', 'mean compactness', 'mean concavity',\n",
       "       'mean concave points', 'mean symmetry', 'mean fractal dimension',\n",
       "       'radius error', 'texture error', 'perimeter error', 'area error',\n",
       "       'smoothness error', 'compactness error', 'concavity error',\n",
       "       'concave points error', 'symmetry error',\n",
       "       'fractal dimension error', 'worst radius', 'worst texture',\n",
       "       'worst perimeter', 'worst area', 'worst smoothness',\n",
       "       'worst compactness', 'worst concavity', 'worst concave points',\n",
       "       'worst symmetry', 'worst fractal dimension'], dtype='<U23')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cancer.feature_names"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "documented-passenger",
   "metadata": {},
   "source": [
    "## 波斯顿房价数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "searching-borough",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506, 13)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "boston = load_boston()\n",
    "boston.data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "incorrect-confidentiality",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "patient-python",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',\n",
       "       'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.feature_names"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "filled-campbell",
   "metadata": {},
   "source": [
    "## 导入特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "cordless-engineering",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506, 104)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X, y = mglearn.datasets.load_extended_boston()\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "naughty-argentina",
   "metadata": {},
   "source": [
    "## knn算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "vanilla-nation",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_knn_classification(n_neighbors=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "infrared-hindu",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_knn_classification(n_neighbors=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "south-occupation",
   "metadata": {},
   "outputs": [],
   "source": [
    "## 划分数据集\n",
    "from sklearn.model_selection import train_test_split\n",
    "X, y = mglearn.datasets.make_forge()\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "incorrect-finland",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建knn训练器\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "clf = KNeighborsClassifier(n_neighbors=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "acknowledged-edmonton",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=3)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练数据\n",
    "clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "tropical-rapid",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 1, 0, 1, 0, 0])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 预测数据\n",
    "clf.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "light-operations",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8571428571428571"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估模型\n",
    "clf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "narrative-civilization",
   "metadata": {},
   "source": [
    "## 分析KNN算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "american-israel",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x211860e0848>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x216 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 3, figsize=(10, 3))\n",
    "for n_neighbors , ax in zip([1, 3, 9], axes):\n",
    "    clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X, y)\n",
    "    mglearn.plots.plot_2d_separator(clf, X, fill=True, eps=0.5, ax=ax, alpha=0.4)\n",
    "    mglearn.discrete_scatter(X[:, 0], X[:, 1], y, ax=ax)\n",
    "    ax.set_title(\"{} neigbor(s)\".format(n_neighbors))\n",
    "    ax.set_xlabel(\"feature 0\")\n",
    "    ax.set_ylabel(\"feature 1\")\n",
    "axes[0].legend(loc=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "abstract-convertible",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "utility-winter",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "certain-telling",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aware-qatar",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "nbTranslate": {
   "displayLangs": [
    "*"
   ],
   "hotkey": "alt-t",
   "langInMainMenu": true,
   "sourceLang": "en",
   "targetLang": "fr",
   "useGoogleTranslate": true
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
